home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_200 / 221_01 / cc1.asm < prev    next >
Assembly Source File  |  1980-01-01  |  19KB  |  1,637 lines

  1. ;small-c V2.3
  2.  EXT ccdiv,ccmult
  3.  EXT fopen,fclose,getc,putc,putchar,getchar,rewind,gets
  4.  EXT exit
  5.  EXT CCSWITCH
  6.  EXT CCPOLL
  7.  EXT isalpha,isupper,islower,isdigit,isspace
  8.  EXT toupper,tolower
  9.  EXT strlen,reverse,left,strcmp,strcpy
  10.  EXT abs,itoa,atoi,printf
  11.  GLOBAL _char
  12. _char
  13.  FCB 99,104,97,114,0
  14.  GLOBAL _int
  15. _int
  16.  FCB 105,110,116,0
  17.  GLOBAL stattab
  18. stattab
  19.  RZB 690
  20.  GLOBAL symtab
  21. symtab
  22.  RZB 8008
  23.  GLOBAL glbptr
  24. glbptr
  25.  FDB 0
  26.  GLOBAL locptr
  27. locptr
  28.  FDB 0
  29.  GLOBAL statptr
  30. statptr
  31.  FDB 0
  32.  GLOBAL endsearc
  33. endsearc
  34.  FDB 0
  35.  GLOBAL startcom
  36. startcom
  37.  FDB 0
  38.  GLOBAL swq
  39. swq
  40.  RZB 100
  41.  GLOBAL argcs
  42. argcs
  43.  RZB 2
  44.  GLOBAL argvs
  45. argvs
  46.  FDB 0
  47.  GLOBAL wq
  48. wq
  49.  RZB 200
  50.  GLOBAL wqptr
  51. wqptr
  52.  FDB 0
  53.  GLOBAL litq
  54. litq
  55.  RZB 1000
  56.  GLOBAL litptr
  57. litptr
  58.  RZB 2
  59.  GLOBAL macq
  60. macq
  61.  RZB 500
  62.  GLOBAL macptr
  63. macptr
  64.  RZB 2
  65.  GLOBAL stdecl
  66. stdecl
  67.  RZB 2
  68.  GLOBAL stage
  69. stage
  70.  RZB 800
  71.  GLOBAL stagenex
  72. stagenex
  73.  FDB 0
  74.  GLOBAL stagelas
  75. stagelas
  76.  FDB 0
  77.  GLOBAL line
  78. line
  79.  RZB 80
  80.  GLOBAL mline
  81. mline
  82.  RZB 80
  83.  GLOBAL lptr
  84. lptr
  85.  RZB 2
  86.  GLOBAL mptr
  87. mptr
  88.  RZB 2
  89.  GLOBAL nxtlab
  90. nxtlab
  91.  RZB 2
  92.  GLOBAL statlab
  93. statlab
  94.  RZB 2
  95.  GLOBAL stlab
  96. stlab
  97.  RZB 2
  98.  GLOBAL litlab
  99. litlab
  100.  RZB 2
  101.  GLOBAL constval
  102. constval
  103.  RZB 4
  104.  GLOBAL monitor
  105. monitor
  106.  RZB 2
  107.  GLOBAL pause
  108. pause
  109.  RZB 2
  110.  GLOBAL DEFDEBUG
  111. DEFDEBUG
  112.  RZB 2
  113.  GLOBAL first_fu
  114. first_fu
  115.  RZB 2
  116.  GLOBAL declared
  117. declared
  118.  RZB 2
  119.  GLOBAL stkp
  120. stkp
  121.  RZB 2
  122.  GLOBAL argstk
  123. argstk
  124.  RZB 2
  125.  GLOBAL ncmp
  126. ncmp
  127.  RZB 2
  128.  GLOBAL swactive
  129. swactive
  130.  RZB 2
  131.  GLOBAL swdefaul
  132. swdefaul
  133.  RZB 2
  134.  GLOBAL swnext
  135. swnext
  136.  FDB 0
  137.  GLOBAL swend
  138. swend
  139.  FDB 0
  140.  GLOBAL errcnt
  141. errcnt
  142.  RZB 2
  143.  GLOBAL eof
  144. eof
  145.  RZB 2
  146.  GLOBAL input
  147. input
  148.  RZB 2
  149.  GLOBAL output
  150. output
  151.  RZB 2
  152.  GLOBAL input2
  153. input2
  154.  RZB 2
  155.  GLOBAL iflevel
  156. iflevel
  157.  RZB 2
  158.  GLOBAL skipleve
  159. skipleve
  160.  RZB 2
  161.  GLOBAL ctext
  162. ctext
  163.  RZB 2
  164.  GLOBAL cmode
  165. cmode
  166.  RZB 2
  167.  GLOBAL lastst
  168. lastst
  169.  RZB 2
  170.  GLOBAL quote
  171. quote
  172.  RZB 2
  173.  GLOBAL cptr
  174. cptr
  175.  FDB 0
  176.  GLOBAL cptr2
  177. cptr2
  178.  FDB 0
  179.  GLOBAL iptr
  180. iptr
  181.  FDB 0
  182.  EXT addglb
  183.  EXT addloc
  184.  EXT addmac
  185.  EXT addstati
  186.  EXT amatch
  187.  EXT blanks
  188.  EXT cnl
  189.  EXT ch
  190.  EXT constexp
  191.  EXT defstora
  192.  EXT doasm
  193.  EXT dumpzero
  194.  EXT entry
  195.  EXT endst
  196.  EXT errrpt
  197.  EXT declexte
  198.  EXT findglb
  199.  EXT findloc
  200.  EXT getint
  201.  EXT getlabel
  202.  EXT header
  203.  EXT illname
  204.  EXT kill
  205.  EXT match
  206.  EXT multidef
  207.  EXT needbrac
  208.  EXT needsub
  209.  EXT newfunc
  210.  EXT nl
  211.  EXT number
  212.  EXT ns
  213.  EXT outbyte
  214.  EXT outdec
  215.  EXT outstr
  216.  EXT pl
  217.  EXT point
  218.  EXT printlab
  219.  EXT qstr
  220.  EXT sout
  221.  EXT stowlit
  222.  EXT symname
  223.  EXT trailer
  224.  EXT upper
  225.  NAME main
  226.  GLOBAL main
  227. main
  228.  LDD  4,S
  229.  STD  argcs
  230.  LDD  2,S
  231.  STD  argvs
  232.  LDD  #swq
  233.  STD  swnext
  234.  PSHS D
  235.  LDD  #100
  236.  PSHS D
  237.  ADDD ,S++
  238.  ADDD ,S++
  239.  PSHS D
  240.  LDD  #4
  241.  PSHS D
  242.  ADDD ,S++
  243.  ADDD ,S++
  244.  STD  swend
  245.  LDD  #1
  246.  STD  first_fu
  247.  LDD  #1
  248.  COMA
  249.  COMB
  250.  ADDD #1
  251.  STD  declared
  252.  LDD  #symtab
  253.  STD  glbptr
  254.  LDD  #symtab
  255.  PSHS D
  256.  LDD  #14
  257.  PSHS D
  258.  LDD  #5
  259.  PULS X
  260.  JSR ccmult
  261.  ADDD ,S++
  262.  STD  glbptr
  263.  LDD  #stattab
  264.  STD  statptr
  265.  LDD  #symtab
  266.  PSHS D
  267.  LDD  #512
  268.  PSHS D
  269.  LDD  #14
  270.  PULS X
  271.  JSR ccmult
  272.  ADDD ,S++
  273.  ADDD #14
  274.  STD  locptr
  275.  STD  endsearc
  276.  STD  startcom
  277.  LDD  #stage
  278.  ADDD #800
  279.  PSHS D
  280.  LDD  #1
  281.  PULS X
  282.  PSHS D
  283.  TFR  X,D
  284.  SUBD ,S++
  285.  STD  stagelas
  286.  LDD  #wq
  287.  STD  wqptr
  288.  LDD  #quote
  289.  ADDD #1
  290.  PSHS D
  291.  LDD  #0
  292.  STB  [,S++]
  293.  STD  stagenex
  294.  STD  skipleve
  295.  STD  iflevel
  296.  STD  lastst
  297.  STD  ncmp
  298.  STD  output
  299.  STD  input2
  300.  STD  input
  301.  STD  eof
  302.  STD  errcnt
  303.  STD  stkp
  304.  STD  litptr
  305.  LDD  #quote
  306.  ADDD #0
  307.  PSHS D
  308.  LDD  #34
  309.  STB  [,S++]
  310.  LDD  #1
  311.  STD  macptr
  312.  STD  cmode
  313.  JSR ask
  314.  JSR header
  315.  JSR parse
  316.  JSR trailer
  317.  JSR closeout
  318.  JSR errrptsu
  319.  RTS
  320.  GLOBAL parse
  321. parse
  322.  LEAS -2,S
  323. cc2
  324.  LDD  eof
  325.  PSHS D
  326.  LDD  #0
  327.  CMPD ,S++
  328.  LBNE cc3
  329.  LDD  #4
  330.  STD  0,S
  331.  LDD  #cc1+0
  332.  PSHS D
  333.  LDD  #6
  334.  PSHS D
  335.  JSR amatch
  336.  LEAS 4,S
  337.  CMPD #0
  338.  LBEQ cc4
  339.  LDD  #3
  340.  STD  0,S
  341. cc4
  342.  LDD  #cc1+7
  343.  PSHS D
  344.  LDD  #6
  345.  PSHS D
  346.  JSR amatch
  347.  LEAS 4,S
  348.  CMPD #0
  349.  LBEQ cc5
  350.  LDD  #1
  351.  STD  0,S
  352. cc5
  353.  LDD  #_char
  354.  PSHS D
  355.  LDD  #4
  356.  PSHS D
  357.  JSR amatch
  358.  LEAS 4,S
  359.  CMPD #0
  360.  LBEQ cc6
  361.  LDD  #1
  362.  PSHS D
  363.  LDD  #2
  364.  DECB
  365.  BLT  *+8
  366.  ASL  1,S
  367.  ROL  ,S
  368.  BRA  *-7
  369.  PULS D
  370.  PSHS D
  371.  LDD  2,S
  372.  PSHS D
  373.  JSR declglb
  374.  LEAS 4,S
  375.  JSR ns
  376.  JMP cc7
  377. cc6
  378.  LDD  #_int
  379.  PSHS D
  380.  LDD  #3
  381.  PSHS D
  382.  JSR amatch
  383.  LEAS 4,S
  384.  CMPD #0
  385.  LBEQ cc8
  386.  LDD  #2
  387.  PSHS D
  388.  LDD  #2
  389.  DECB
  390.  BLT  *+8
  391.  ASL  1,S
  392.  ROL  ,S
  393.  BRA  *-7
  394.  PULS D
  395.  PSHS D
  396.  LDD  2,S
  397.  PSHS D
  398.  JSR declglb
  399.  LEAS 4,S
  400.  JSR ns
  401.  JMP cc9
  402. cc8
  403.  LDD  #cc1+14
  404.  PSHS D
  405.  JSR match
  406.  LEAS 2,S
  407.  CMPD #0
  408.  LBEQ cc10
  409.  JSR doasm
  410.  JMP cc11
  411. cc10
  412.  LDD  #cc1+19
  413.  PSHS D
  414.  JSR match
  415.  LEAS 2,S
  416.  CMPD #0
  417.  LBEQ cc12
  418.  JSR doinclud
  419.  JMP cc13
  420. cc12
  421.  LDD  #cc1+28
  422.  PSHS D
  423.  JSR match
  424.  LEAS 2,S
  425.  CMPD #0
  426.  LBEQ cc14
  427.  JSR addmac
  428.  JMP cc15
  429. cc14
  430.  LDD  0,S
  431.  PSHS D
  432.  JSR newfunc
  433.  LEAS 2,S
  434. cc15
  435. cc13
  436. cc11
  437. cc9
  438. cc7
  439.  JSR blanks
  440.  JMP cc2
  441. cc3
  442.  LEAS 2,S
  443.  RTS
  444. cc1 FCB 101,120,116,101,114,110,0,115,116,97
  445.  FCB 116,105,99,0,35,97,115,109,0,35
  446.  FCB 105,110,99,108,117,100,101,0,35,100
  447.  FCB 101,102,105,110,101,0
  448.  GLOBAL dumplits
  449. dumplits
  450.  LEAS -4,S
  451.  LDD  #0
  452.  STD  0,S
  453. cc17
  454.  LDD  0,S
  455.  PSHS D
  456.  LDD  litptr
  457.  CMPD ,S++
  458.  LBLE cc18
  459.  LDD  6,S
  460.  PSHS D
  461.  JSR defstora
  462.  LEAS 2,S
  463.  LDD  #10
  464.  STD  2,S
  465. cc19
  466.  LDD  2,S
  467.  SUBD #1
  468.  STD  2,S
  469.  ADDD #1
  470.  CMPD #0
  471.  LBEQ cc20
  472.  LDD  #litq
  473.  PSHS D
  474.  LDD  2,S
  475.  ADDD ,S++
  476.  PSHS D
  477.  LDD  8,S
  478.  PSHS D
  479.  JSR getint
  480.  LEAS 4,S
  481.  PSHS D
  482.  JSR outdec
  483.  LEAS 2,S
  484.  LEAY 0,S
  485.  TFR  Y,D
  486.  PSHS D
  487.  LDD  2,S
  488.  PSHS D
  489.  LDD  10,S
  490.  ADDD ,S++
  491.  STD  [,S++]
  492.  LDD  2,S
  493.  PSHS D
  494.  LDD  #0
  495.  CMPD ,S++
  496.  BEQ  *+7
  497.  LDD  #0
  498.  BRA  *+5
  499.  LDD  #1
  500.  PSHS D
  501.  LDD  2,S
  502.  PSHS D
  503.  LDD  litptr
  504.  CMPD ,S++
  505.  BLE  *+7
  506.  LDD  #0
  507.  BRA  *+5
  508.  LDD  #1
  509.  ORA  ,S+
  510.  ORB  ,S+
  511.  CMPD #0
  512.  LBEQ cc21
  513.  JSR nl
  514.  JMP cc20
  515. cc21
  516.  LDD  #44
  517.  PSHS D
  518.  JSR outbyte
  519.  LEAS 2,S
  520.  JMP cc19
  521. cc20
  522.  JMP cc17
  523. cc18
  524.  LDD  #0
  525.  STD  litptr
  526.  LEAS 4,S
  527.  RTS
  528.  GLOBAL errrptsu
  529. errrptsu
  530.  LDD  ncmp
  531.  CMPD #0
  532.  LBEQ cc22
  533.  LDD  #cc16+0
  534.  PSHS D
  535.  JSR errrpt
  536.  LEAS 2,S
  537. cc22
  538.  LDD  #1
  539.  STD  output
  540.  JSR cnl
  541.  LDD  errcnt
  542.  PSHS D
  543.  JSR outdec
  544.  LEAS 2,S
  545.  LDD  #cc16+24
  546.  PSHS D
  547.  JSR outstr
  548.  LEAS 2,S
  549.  RTS
  550. cc16 FCB 109,105,115,115,105,110,103,32,99,108
  551.  FCB 111,115,105,110,103,32,98,114,97,99
  552.  FCB 107,101,116,0,32,101,114,114,111,114
  553.  FCB 40,115,41,32,105,110,32,99,111,109
  554.  FCB 112,105,108,97,116,105,111,110,46,0
  555.  GLOBAL ask
  556. ask
  557.  LEAS -4,S
  558.  LEAY 2,S
  559.  TFR  Y,D
  560.  PSHS D
  561.  LDD  #0
  562.  STD  nxtlab
  563.  STD  [,S++]
  564.  JSR getlabel
  565.  STD  litlab
  566.  JSR kill
  567.  LDD  #1
  568.  STD  output
  569.  LDD  #0
  570.  STD  ctext
  571.  STD  DEFDEBUG
  572.  STD  pause
  573.  STD  monitor
  574.  LDD  argcs
  575.  PSHS D
  576.  LDD  #1
  577.  CMPD ,S++
  578.  LBNE cc24
  579.  LDD  #cc23+0
  580.  PSHS D
  581.  LDD  #2
  582.  PSHS D
  583.  JSR sout
  584.  LEAS 4,S
  585.  LDD  #cc23+35
  586.  PSHS D
  587.  LDD  #2
  588.  PSHS D
  589.  JSR sout
  590.  LEAS 4,S
  591.  LDD  #cc23+51
  592.  PSHS D
  593.  LDD  #2
  594.  PSHS D
  595.  JSR sout
  596.  LEAS 4,S
  597.  LDD  #0
  598.  PSHS D
  599.  JSR exit
  600.  LEAS 2,S
  601. cc24
  602. cc25
  603.  LDD  argcs
  604.  SUBD #1
  605.  STD  argcs
  606.  CMPD #0
  607.  LBEQ cc26
  608.  LEAY 0,S
  609.  TFR  Y,D
  610.  PSHS D
  611.  LDD  argvs
  612.  PSHS D
  613.  LDD  6,S
  614.  ADDD #1
  615.  STD  6,S
  616.  PSHS D
  617.  ADDD ,S++
  618.  ADDD ,S++
  619.  PSHS D
  620.  LDD  [,S++]
  621.  STD  [,S++]
  622.  LDD  0,S
  623.  PSHS D
  624.  LDB  [,S++]
  625.  SEX
  626.  PSHS D
  627.  LDD  #60
  628.  CMPD ,S++
  629.  LBNE cc27
  630.  LDD  0,S
  631.  ADDD #1
  632.  STD  0,S
  633.  PSHS D
  634.  LDD  #cc23+53
  635.  PSHS D
  636.  JSR fopen
  637.  LEAS 4,S
  638.  STD  input
  639.  PSHS D
  640.  LDD  #0
  641.  CMPD ,S++
  642.  LBNE cc28
  643.  LDD  #cc23+55
  644.  PSHS D
  645.  JSR errrpt
  646.  LEAS 2,S
  647.  LDD  #0
  648.  PSHS D
  649.  JSR exit
  650.  LEAS 2,S
  651.  JMP cc29
  652. cc28
  653.  JMP cc25
  654. cc29
  655.  JMP cc30
  656. cc27
  657.  LDD  0,S
  658.  PSHS D
  659.  LDB  [,S++]
  660.  SEX
  661.  PSHS D
  662.  LDD  #62
  663.  CMPD ,S++
  664.  LBNE cc31
  665.  LDD  0,S
  666.  ADDD #1
  667.  STD  0,S
  668.  PSHS D
  669.  LDD  #cc23+72
  670.  PSHS D
  671.  JSR fopen
  672.  LEAS 4,S
  673.  STD  output
  674.  PSHS D
  675.  LDD  #0
  676.  CMPD ,S++
  677.  LBNE cc32
  678.  LDD  #cc23+74
  679.  PSHS D
  680.  JSR errrpt
  681.  LEAS 2,S
  682.  LDD  #0
  683.  PSHS D
  684.  JSR exit
  685.  LEAS 2,S
  686.  JMP cc33
  687. cc32
  688.  JMP cc25
  689. cc33
  690.  JMP cc34
  691. cc31
  692.  LDD  0,S
  693.  ADDD #1
  694.  STD  0,S
  695.  SUBD #1
  696.  PSHS D
  697.  LDB  [,S++]
  698.  SEX
  699.  PSHS D
  700.  LDD  #45
  701.  CMPD ,S++
  702.  LBNE cc35
  703.  LDD  0,S
  704.  PSHS D
  705.  LDB  [,S++]
  706.  SEX
  707.  PSHS D
  708.  JSR upper